package com.dormitory.dormitorymanagement.service;

import com.dormitory.dormitorymanagement.pojo.*;
import com.dormitory.dormitorymanagement.pojo.dto.LoginDto;
import com.dormitory.dormitorymanagement.pojo.dto.*;
import com.dormitory.dormitorymanagement.pojo.vo.PostsVo;
import com.dormitory.dormitorymanagement.pojo.vo.StudentEvaluationsVo;

import java.util.List;

public interface StudentsService {
    /**
     * 登录
     * @param loginDto
     * @return
     */
    Students login(LoginDto loginDto);


    /**
     * 添加保修记录
     * @param dormRepair
     */
    void insert(DormRepair dormRepair);

    /**
     *  获取学生列表
     * @param studentIds
     * @return
     */
    List<Students> getStudentsByIds(List<String> studentIds);

    /**
     *  获取所有学生列表
     * @return
     */
    List<Students> getStudentsAll();

     /**
     * 获取最新通知
     * @param studentId
     * @param pageSize
     * @return
     */
    List<Notice> getLatestNotice(String studentId, Integer pageSize);


    /**
     *  获取通知详情
     * @param noticeId
     * @return
     */
    Notice getNoticeDetail(Integer noticeId);


    /**
     *  获取班级通知
     * @param studentId
     * @param pageSize
     * @return
     */
    List<ClassNotice> getLatestClassNotice(String studentId, Integer pageSize);


    /**
     * 获取详细班级通知
     * @param id
     * @return
     */
    ClassNotice getClassNoticeDetail(Integer id);


    /**
     * 获取课表
     * @param studentId
     * @return
     */
    List<CourseSchedule> getCources(String studentId);


    /**
     * 获取班干部
     * @param page
     * @param pageSize
     * @return
     */
    PageBean<Students> getClassLeader(String studentId,Integer page, Integer pageSize);


    /**
     * 获取宿舍管理员
     * @param studentId
     * @param page
     * @param pageSize
     * @return
     */
    PageBean<DormitoryAdmin> getDormAdmin(String studentId, Integer page, Integer pageSize);


    /**
     *  提交评价
     * @param evaluationDto
     */
    void submit(EvaluationDto evaluationDto);


    /**
     *  获取评价
     * @param targetId
     * @param targetType
     * @return
     */
    StudentEvaluations getStudentEvaluations(String targetId, String targetType);

    /**
     *  提交帖子
     * @param postsDto
     */
    void postsSubmit(PostsDto postsDto);

    /**
     * 返回帖子列表
     * @param studentId
     * @return
     */
    List<PostsVo> getPostsList(String studentId);


    /**
     * 添加评论
     * @param commentsDto
     */
    void commentSubmit(CommentsDto commentsDto);


    /**
     * 添加回复
     * @param replyDto
     */
    void replySubmit(ReplyDto replyDto);

    /**
     * 获取我的评价
     * @param studentId
     * @param page
     * @param pageSize
     * @return
     */
     PageBean<StudentEvaluationsVo> getStudentMyEvaluations(String studentId, Integer page, Integer pageSize);


     /**
     * 学生注册
     * @param userDto
     */
    void studentRedister(UserDto userDto);


    /**
     * 班干部注册
     * @param userDto
     */
    void classLeaderRedister(UserDto userDto);
}
